package com.zoe.onelink.common.enumeration;

import lombok.AllArgsConstructor;

@AllArgsConstructor
public enum UpmsExceptionCodeEnum implements ExceptionCode {

    // 授权框架：2001~2099
    /**
     * 授权认证失败，账号或密码错误，HttpStatus=401
     */
    UPMS_AUTH_USERNAME_OR_PASSWORD_ERROR("2001"),
    /**
     * 授权认证失败，账号被禁用，HttpStatus=401
     */
    UPMS_AUTH_ACCOUNT_DISABLED("2002"),
    /**
     * 登录状态失效或已过期，HttpStatus=401
     */
    UPMS_AUTH_TOKEN_INVALID("2003"),
    /**
     * 您无权限执行该操作，HttpStatus=403
     */
    UPMS_AUTH_NOT_PERMISSION("2004"),
    /**
     * 不支持的grant_type类型，HttpStatus=400
     */
    UPMS_AUTH_UNSUPPORT_GRANT_TYPE("2005"),



    // 用户：2101~2199
    /**
     * 员工号[{0}]已存在
     */
    UPMS_SERVICE_USER_NO_ALREADY_EXISTS("2101"),
    /**
     * 手机号[{0}]已存在
     */
    UPMS_SERVICE_USER_PHONE_ALREADY_EXISTS("2102"),
    /**
     * 邮箱[{0}]已存在
     */
    UPMS_SERVICE_USER_EMAIL_ALREADY_EXISTS("2103"),
    /**
     * 用户数据不存在
     */
    UPMS_SERVICE_USER_DATA_NOT_EXISTS("2104"),
    /**
     * 工牌号[{0}]已存在
     */
    UPMS_SERVICE_USER_WOKER_NO_ALREADY_EXISTS("2105"),
    /**
     * 用户名[{0}]已存在
     */
    UPMS_SERVICE_USER_USERNAME_ALREADY_EXISTS("2106"),



    // 角色：2201~2299
    /**
     * 角色标识[{0}]已存在
     */
    UPMS_SERVICE_ROLE_CODE_ALREADY_EXISTS("2201"),
    /**
     * 角色数据不存在
     */
    UPMS_SERVICE_ROLE_DATA_NOT_EXISTS("2202"),
    /**
     * 该角色已绑定用户，无法删除
     */
    UPMS_SERVICE_ROLE_DELETE_ERROR_BY_ALREADY_BOUND_USER("2203"),
    /**
     * 包含下级角色无法删除
     */
    UPMS_SERVICE_ROLE_DELETE_ERROR_BY_EXIST_CHILD("2204"),
    /**
     * 父级角色不存在
     */
    UPMS_SERVICE_ROLE_PARENT_DATA_NOT_EXISTS("2205"),
    /**
     * 设置的父级路径中存在循环，请检查父级路径中是否存在当前角色
     */
    UPMS_SERVICE_ROLE_PARENT_PATH_LOOP("2206"),
    /**
     * 无法删除角色，角色已经授权员工
     */
    UPMS_SERVICE_ROLE_DELETE_ERROR_BY_EXIST_USER("2207"),



    // 产品：2301~2399
    /**
     * 产品名称[{0}]已存在
     */
    UPMS_SERVICE_PRODUCT_NAME_ALREADY_EXISTS("2301"),
    /**
     * 产品数据不存在
     */
    UPMS_SERVICE_PRODUCT_DATA_NOT_EXISTS("2302"),
    /**
     * 包含子系统无法删除
     */
    UPMS_SERVICE_PRODUCT_DEL_ERROR_BY_EXIST_SUBSYSTEM("2303"),
    /**
     * 产品：[{0}]所属子系统包含下级资源，无法删除！
     */
    UPMS_SERVICE_PRODUCT_DEL_ERROR_BY_EXIST_SUBSYSTEM_CHILD("2304"),



    // 参数类型、参数数据：2401~2499
    /**
     * 类型名称[{0}]已存在
     */
    UPMS_SERVICE_PARAM_TYPE_NAME_ALREADY_EXISTS("2401"),
    /**
     * 参数[{0}]已存在
     */
    UPMS_SERVICE_PARAM_NAME_EN_ALREADY_EXISTS("2402"),
    /**
     * 参数不存在
     */
    UPMS_SERVICE_PARAM_NOT_EXISTS("2403"),



    // 机构：2501~2599
    /**
     * 机构编码[{0}]已存在
     */
    UPMS_SERVICE_ORG_CODE_ALREADY_EXISTS("2501"),
    /**
     * 机构名称[{0}]已存在
     */
    UPMS_SERVICE_ORG_NAME_ALREADY_EXISTS("2502"),
    /**
     * 机构不存在
     */
    UPMS_SERVICE_ORG_NOT_EXISTS("2503"),
    /**
     * 包含院区无法删除
     */
    UPMS_SERVICE_ORG_DEL_ERROR_BY_EXIST_DISTRICT("2504"),
    /**
     * 机构：[{0}]所属院区包含下级资源，无法删除！
     */
    UPMS_SERVICE_ORG_DEL_ERROR_BY_EXIST_DISTRICT_CHILD("2505"),



    // 菜单：2601~2699
    /**
     * 菜单不存在
     */
    UPMS_SERVICE_MENU_NOT_EXISTS("2601"),
    /**
     * 菜单权限标识[{0}]已存在
     */
    UPMS_SERVICE_MENU_PERMISSION_ALREADY_EXISTS("2602"),
    /**
     * 父级菜单不存在
     */
    UPMS_SERVICE_MENU_PARENT_NOT_EXISTS("2603"),
    /**
     * {菜单类型}：{菜单名}包含下级资源，无法删除！
     */
    UPMS_SERVICE_MENU_DEL_ERROR_BY_EXIST_CHILD("2604"),
    /**
     * 设置的父级路径中存在循环，请检查父级路径中是否存在当前菜单
     */
    UPMS_SERVICE_MENU_PARENT_PATH_LOOP("2605"),
    /**
     * 菜单排序号重复
     */
    UPMS_SERVICE_MENU_SORT_NO_EXIST("2606"),



    // 院区：2701~2799
    /**
     * 院区编码[{0}]已存在
     */
    UPMS_SERVICE_DISTRICT_CODE_ALREADY_EXISTS("2701"),
    /**
     * 院区名[{0}]已存在
     */
    UPMS_SERVICE_DISTRICT_NAME_ALREADY_EXISTS("2702"),
    /**
     * 院区不存在
     */
    UPMS_SERVICE_DISTRICT_NOT_EXISTS("2703"),
    /**
     * 包含科室无法删除
     */
    UPMS_SERVICE_DISTRICT_DEL_ERROR_BY_EXIST_DEPT("2704"),



    // 字典：2801~2899
    /**
     * 字典类型[{0}]已存在
     */
    UPMS_SERVICE_DICT_TYPE_ALREADY_EXISTS("2801"),
    /**
     * 字典类型名称[{0}]已存在
     */
    UPMS_SERVICE_DICT_TYPE_NAME_ALREADY_EXISTS("2802"),
    /**
     * 字典类型不存在
     */
    UPMS_SERVICE_DICT_TYPE_NOT_EXISTS("2803"),
    /**
     * 字典键值[{0}]已存在
     */
    UPMS_SERVICE_DICT_VALUE_ALREADY_EXISTS("2804"),
    /**
     * 字典标签[{0}]已存在
     */
    UPMS_SERVICE_DICT_LABEL_ALREADY_EXISTS("2805"),
    /**
     * 字典数据不存在
     */
    UPMS_SERVICE_DICT_DATA_NOT_EXISTS("2806"),



    // 科室：2901~2999
    /**
     * 科室名称[{0}]已存在
     */
    UPMS_SERVICE_DEPT_NAME_ALREADY_EXISTS("2901"),
    /**
     * 科室不存在
     */
    UPMS_SERVICE_DEPT_NOT_EXISTS("2902"),
    /**
     * 只有业务科室能分配角色
     */
    UPMS_SERVICE_DEPT_NOT_AUTH_DISTRIBUTE_ROLE("2903"),
    /**
     * 父级科室不存在
     */
    UPMS_SERVICE_DEPT_PARENT_DATA_NOT_EXISTS("2904"),
    /**
     * 设置的父级路径中存在循环，请检查父级路径中是否存在当前菜单
     */
    UPMS_SERVICE_DEPT_PARENT_PATH_LOOP("2905"),



    /**
     * 子系统名[{0}]已存在
     */
    UPMS_SERVICE_SUBSYSTEM_NAME_ALREADY_EXISTS("3001"),

    /**
     * 子系统不存在
     */
    UPMS_SERVICE_SUBSYSTEM_NOT_EXISTS("3002"),

    /**
     * 包含菜单资源无法删除
     */
    UPMS_SERVICE_SUBSYSTEM_DEL_ERROR_BY_EXIST_MENU("3003"),



    /**
     * authId参数格式错误
     */
    UPMS_SERVICE_USER_MENU_AUTH_AUTH_ID_FORMAT_ERROR("3101"),
    /**
     * 只有来自角色的权限能使用恢复功能
     */
    UPMS_SERVICE_USER_MENU_AUTH_ENABLE_ERROR("3102"),
    /**
     * 只有来自角色的权限能使用禁用功能
     */
    UPMS_SERVICE_USER_MENU_AUTH_DISABLED_ERROR("3103"),
    /**
     * 只有来自个人的权限能使用删除功能
     */
    UPMS_SERVICE_USER_MENU_AUTH_DEL_ERROR("3104"),


    /**
     * 员工数据不存在
     */
    UPMS_SERVICE_STAFF_DATA_NOT_EXISTS("3201"),


    /**
     * 省份代码已存在
     */
    UPMS_SERVICE_PROVINCE_DICT_CODE_ALREADY_EXISTS("3301"),
    /**
     * 省份数据不存在
     */
    UPMS_SERVICE_PROVINCE_DICT_NOT_EXISTS("3302"),


    ;





    /**
     * 异常编码
     */
    private final String code;

    @Override
    public String getCode() {
        return "1000" + this.code;
    }

    @Override
    public String getMessageKey() {
        return this.name();
    }
}
